﻿using System;
using System.Collections.Generic;
using System.Windows.Controls;
using System.Linq;
using System.Windows;
using System.Collections.ObjectModel;

namespace QuanLyDuocPham.Controllers.QuanLyHeThong.DanhMuc
{
    class NHOMDP_Control : IDisposable
    {
        DuocPhamDataContext db = new DuocPhamDataContext(staticClass.Conn);
        public void Dispose()
        {
            if (db != null)
            {
                db.Dispose();
                db = null;
            }
            if (nganhctrl != null)
            {
                nganhctrl.Dispose();
                nganhctrl = null;
            }
        }
        public void loadComboBox(ComboBox cmb)
        {

            cmb.Items.Clear();
            var list = db.NHOMDP_Get_List();
            var typeorder = list.OrderBy(w => w.MA_NHOMDP);

            foreach (var t in typeorder)
            {
                cmb.Items.Add(t);
            }
            cmb.SelectedValuePath = "MA_NHOMDP";
            cmb.IsTextSearchEnabled = true;
            cmb.IsTextSearchCaseSensitive = false;
            cmb.IsEditable = true;

            NHOMDP_Get_ListResult temp = new NHOMDP_Get_ListResult();

            temp.MA_NHOMDP = "...";
            temp.TEN_NHOM = "Thêm mới";
            cmb.Items.Add(temp);
        }

        public string loadID_moi()
        {
            string ID = "";

            int rowcount = db.NHOMDP_Get_List().Count();
            if (rowcount == 0)
            {
                ID = "NH001";
            }
            else
            {
                for (int i = 1; i < rowcount+2; i++)
                {
                    string IDtam = "NH";
                    for (int j = 0; j < (3 - i.ToString().Length); j++)
                        IDtam = IDtam + "0";
                    IDtam = IDtam + i;
                    Boolean kq = true;
                    var data = db.NHOMDP_Get_List();

                    foreach (var t in data)
                    {

                        if (t.MA_NHOMDP.Trim() == IDtam.Trim())

                            kq = false;
                    }
                    if (kq == true)
                    {
                        ID = IDtam;
                        break;
                    }
                }

            }
            return ID;

        }


        public void addData(string ma_nhomdp, ComboBox cmbNganh, TextBox txtTen_Nhom, RichTextBox txtGhi_Chu)
        {
            if (txtTen_Nhom.Text.Trim() == "" || cmbNganh.SelectedItem == null)
                MessageBox.Show("Chưa nhập đủ thông tin!");
            else
            {
                var nganh = (NGANH_Get_ListResult)cmbNganh.SelectedItem;
                db.NHOMDP_Insert(ma_nhomdp, nganh.MA_NGANH, txtTen_Nhom.Text, txtGhi_Chu.Document.Blocks.ToString());
                MessageBox.Show("Đã thêm thành công");
            }
        }


        public void loadData(ListView List)
        {
            List.Items.Clear();
            var list = db.NHOMDP_Get_List();
            var typeorder = list.OrderBy(w => w.MA_NHOMDP);

            foreach (var t in typeorder)
            {
                List.Items.Add(t);
            }
        }

        public void loadData(DataPager dp)
        {
            
            var list = db.NHOMDP_Get_List().Join(db.NGANH_Get_List(),p=>p.MA_NGANH,c=>c.MA_NGANH,(p,c)=>new {p.TEN_NHOM,p.MA_NHOMDP,p.MA_NGANH,p.GHI_CHU,c.TEN_NGANH });
            var typeorder = list.OrderBy(w => w.TEN_NHOM);

            ObservableCollection<Object> dpSource = new ObservableCollection<Object>();
            int i = 1;
            foreach (var t in typeorder)
            {
                if (t.TEN_NHOM.Trim() != "")
                {
                    dpSource.Add(new { STT = i, t.TEN_NHOM, t.TEN_NGANH, t.MA_NHOMDP, t.MA_NGANH, t.GHI_CHU });
                    i++;
                }
            }
            dp.ItemsSource = dpSource;
            dp.ItemsPerPage = 10;
        }
        public void updateData(string ma_nhomdp, ComboBox cmbNganh, TextBox txtTen_Nhom, RichTextBox txtGhi_Chu)
        {
            var nganh = (NGANH_Get_ListResult)cmbNganh.SelectedItem;
            db.NHOMDP_Update(ma_nhomdp, ma_nhomdp, nganh.MA_NGANH, txtTen_Nhom.Text, txtGhi_Chu.Document.Blocks.ToString()); ;
            MessageBox.Show("Đã cập nhật!");
        }

        public string deleteData(string ID_Delete, string error)
        {

            error = "";
            if (db.DUOCPHAM_GetByMaNhomdp(ID_Delete).Count() > 0 || db.DONTHUOC_GetByMaNhombenh(ID_Delete).Count() > 0)
                error = "Không thể xóa";
            else
            {
                db.NHOMDP_Delete(ID_Delete);
                error = "Xóa thành công!";
            } 
            return error;


        }
        NGANH_Control nganhctrl = new NGANH_Control();
        public void loadForm_Edit(string ID_Edit, ComboBox cmbNganh, TextBox txtTen_Nhom, RichTextBox txtGhi_Chu)
        {

            var sl = (NHOMDP_GetByMaNhomdpResult)db.NHOMDP_GetByMaNhomdp(ID_Edit).Single();


            
            txtTen_Nhom.Text = sl.TEN_NHOM;
            txtGhi_Chu.AppendText( sl.GHI_CHU);

            nganhctrl.loadComboBox(cmbNganh);
            int t = 0;
            foreach (var i in cmbNganh.Items)
            {
                var temp = (NGANH_Get_ListResult)i;
                if (temp.MA_NGANH == sl.MA_NGANH)
                {
                    break;
                }
                t++;
            }
            cmbNganh.SelectedIndex = t;
        }
    }
}
